/*Shift-JIS*/
/*UTF-8*/
/********************************************************************************/
/*ソース名:                                                                       */
/*　　mem_interface.h                                                            */
/*機能:                                                                         */
/*　　 メモリ管理モジュールのインターフェース　　　　　　　　　　　                                                                                     */
/*作成者:                                                                       */
/*　　2010/06 関（CBSﾃｸﾉ）                                                                                                                                       */
/********************************************************************************/
/*変更履歴:                                                                     */
/*　2010/06　関　　新規作成                                                                                                                                    */
/********************************************************************************/
#ifndef __MEM_INTERFACE_H_
#define __MEM_INTERFACE_H_
#ifndef __TYPEDEF_FOR_ALL
#include "typedef.h"
#endif
#ifndef __DEF_ID_FOR_ALL
#include "Id.h"
#endif
#define 	MAX_VOLUMN_OF_TABLE			1000	/* １テーブルにつき、最大1000MB*/
#define 	MEMMAX_NOLIMIT	((AST)-1)	/* ﾒﾓﾘ確保最大値：無制限	*/
#define 	MIN_ARRAY		((AST)1)	/* 最小の添え字			*/
#define  	NUM_OF_PROCESS		10		/* モジュール数			*/
#ifndef 	SIZE_FULLPATH
#define 	SIZE_FULLPATH 255
#endif
#ifndef 	OS_FULLPATH
#define 	OS_FULLPATH 512
#endif





/***********************************************
 * 公開データ
 ***********************************************/
/* typedef */
typedef struct __BUFFER_OWNER
{
	U4  procid;
	U2	index;
	VOID (*resetListener)( U4  procid, U2 index );
}buffer_owner_info;

/***********************************************
 * 公開関数
 ***********************************************/
/************************************************************************/
/**********	APIﾌﾟﾛﾄﾀｲﾌﾟ		*********************************/
/************************************************************************/
BOOL	MemFreeMemory( VOID **pBlock );
U4	MemRegisiter( PSZ str );
BOOL	MemNewMemory( U4 ulSize, VOID ** ppvBlock, buffer_owner_info ** ppBufOwner );
BOOL	MemReallocMemory( U4 ulSize, VOID ** ppvBlock, buffer_owner_info ** ppBufOwner );
U4	MemGetPagesize( VOID *page_offset );
BOOL MemIsValidPage( VOID *page_offset,  buffer_owner_info* owner );
VOID * MemTblSwapInTable( U4 u4Idx, U2 headerno, buffer_owner_info ** ppBufOwner );
BOOL	MemFreeMemory( VOID **pBlock );
VOID MemSetOldPage( VOID *page_offset );
U4	MemGetBlockSize( VOID );
PSZ MemGetTblRegister( U4 idx );
U4 MemGetMaxSize( VOID );
U4 MemGetUsefulSize( VOID );
U4 MemGetIdleBlockNumber( VOID );
U4 MemGetBusyBlockNumber( VOID );
U4 MemGetLazyBlockNumber( VOID );
VOID MemReleaseUnusedMem( VOID );
#endif/* MEM_INTERFACE_H_ */
/******************end of file ********************************/
